"""
 @author adun
 @date 2020/11/2 22:58
 # 变量仅在创建区域内可用。这称为作用域。
"""


def myfunc():
    x = 100
    print(x)


myfunc()


# ###函数内部的函数
# 如上例中所示，变量 x 在函数外部不可用，但对于函数内部的任何函数均可用：

def myfunc():
    x = 100

    def myinnerfunc():
        print(x)

    myinnerfunc()


myfunc()

# 全局作用域
# 在 Python 代码主体中创建的变量是全局变量，属于全局作用域。
#
# 全局变量在任何范围（全局和局部）中可用。
x = 100


def myfunc():
    print(x)


myfunc()

print(x)

# ###命名变量
# 如果在函数内部和外部操作同名变量，Python 会将它们视为两个单独的变量，一个在全局范围内可用（在函数外部），而一个在局部范围内可用（在函数内部）：
#
# 实例
# 该函数将打印局部变量 x，然后代码还会打印全局变量 x：
x = 100


def myfunc():
    x = 200
    print(x)


myfunc()

print(x)


# Global 关键字
# 如果您需要创建一个全局变量，但被卡在本地作用域内，则可以使用 global 关键字。
#
# global 关键字使变量成为全局变量。
#
# 实例
# 如果使用 global 关键字，则该变量属于全局范围：
def myfunc():
    global x
    x = 100


myfunc()

print(x)

# 另外，如果要在函数内部更改全局变量，也请使用 global 关键字。
#
# 实例
# 要在函数内部更改全局变量的值，请使用 global 关键字引用该变量：
x = 100


def myfunc():
    global x  # 这里的全局变量会覆盖原全局变量
    x = 200


def hh():
    global x
    x = 3000


myfunc()
hh()

print("全局变量：",x)
